package com.jk.hearthstone.card.biology.entourage;

import com.jk.hearthstone.card.biology.BaseBiology;
import com.jk.hearthstone.data.Desktop;
import com.jk.hearthstone.data.History;
import com.jk.hearthstone.enumeration.BattleCryType;

import static com.jk.hearthstone.enumeration.BattleCryType.BATTEL_CRY_TYPE_WITHOUTTARGET;

/**
 * 所有随从的基类
 * @author jk
 */
public abstract class BaseEntourage extends BaseBiology implements Cloneable {

    public Integer attackNum = 1; //可攻击次数
    public BattleCryType battleCryType = BATTEL_CRY_TYPE_WITHOUTTARGET;

    public Boolean bloodSucking = false; //吸血
    public Boolean taunt = false; //嘲讽
    public Boolean charge = false; //冲锋
    public Boolean suddenStrike = false; //突袭
    public Boolean echoes = false; //回响
    public Boolean windfury = false; //风怒
    public Boolean superWindfury = false; //超级风怒
    public Boolean immune = false; //法术和英雄技能免疫
    public Boolean stealth = false; //潜行
    public Boolean holyShield = false; //圣盾
    public Boolean magnetic = false; //磁力
    public Boolean silent = false; //沉默
    public Integer overload = 0; //过载


    /**
     * 战吼
     * @param desktop 桌面环境
     * @param history 游戏历史
     */
    public void battleCry(Desktop desktop, History history){}

    /**
     * 需要选择目标的战吼
     * @param desktop 桌面环境
     * @param history 游戏历史
     */
    public boolean battleCry(Desktop desktop, History history,BaseBiology target){
        return false;
    }

    /**
     * 亡语
     * @param desktop 桌面环境
     * @param history 游戏历史
     */
    public void deadWords(Desktop desktop, History history){}

    /**
     * 回合开始效果
     * @param desktop 桌面环境
     * @param history 游戏历史
     */
    public void turnStart(Desktop desktop, History history){}

    /**
     * 回合结束效果
     * @param desktop 桌面环境
     * @param history 游戏历史
     */
    public void turnEnd(Desktop desktop, History history){}

    /**
     * 连击
     * @param desktop 桌面环境
     * @param history 游戏历史
     */
    public void combo(Desktop desktop, History history){}

    /**
     * 超杀
     * @param desktop 桌面环境
     * @param history 游戏历史
     */
    public void superKill(Desktop desktop, History history){}

    /**
     * 释放法术后触发效果
     * @param desktop
     * @param history
     */
    public void afterMagic(Desktop desktop, History history){}

    @Override
    public Object clone() throws CloneNotSupportedException {
        return super.clone();
    }
}
